package gruppoC;

/**
 * @author gruppo C
 * sfruttato il design pattern Mediator.
 * Si occupa di rendere "centralizzata" la gestione dei servizi
 * Spezza la dipendenza tra HTTP Server e i vari servizi
 */


import java.util.List;
import java.util.StringTokenizer;

import server.IHTTPServer;

/*
 * TODO Azz ... un mediator che usa un proxy ...
 * occhio, quando si combinano i design pattern bisogna fare
 * molta attenzione perchè ... già è difficile usarne uno!!
 * 
 * 1) In questo caso il proxy non è utile perchè basta fare 
 * 
 * 		if (request.endsWith(".html")) {
	    	return (new Servizio0()).getAnswer(request);
	    }else if(request.startsWith("/inserisci?")){
	    	return (new Servizio1()).getAnswer(request);
	    }
 * 
 * 2) Questo non è un mediator, è uno Strategy!!
 * 
 */
/* TODO
 * Sconsiglio di usare il nome 'Mediator'
 */
public class Mediator implements IHTTPServer {


	private ProxyServizio proxyServizio=new ProxyServizio();
	
	@Override
	public List<String> elaboraRispostaHTTP(List<String> richiestaHTTP) {
		
		String line = richiestaHTTP.get(0);
		StringTokenizer tokenizer = new StringTokenizer(line);
	    tokenizer.nextToken("/");
	    String request= tokenizer.nextToken(" ");
	    
	    if (request.endsWith(".html")) {
	    	proxyServizio.setProxyServizio(new Servizio0());
	    	
	    }else if(request.startsWith("/inserisci?")){
	    	proxyServizio.setProxyServizio(new Servizio1());
	    }
		
	    
	    //return servizio.getAnswer(request);
	    return proxyServizio.getAnswer(request);
	}

}
